package org.dromara.patrol.domain.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.common.mybatis.handler.ListInteger2ListLongTypeHandler;
import org.dromara.patrol.domain.PatrolActionStatistics;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;


/**
 * 巡店管理-巡店行为统计视图对象 patrol_action_statistics
 *
 * @author han
 * @date 2024-04-19
 */
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = PatrolActionStatistics.class)
public class PatrolActionStatisticsVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /**
     * id
     */
    @ExcelProperty(value = "id")
    private Long id;

    /**
     * 巡店用户id
     */
    @ExcelProperty(value = "巡店用户id")
    private Long userId;

    /**
     * 区域id
     */
    @ExcelProperty(value = "区域id")
    private Long groupId;

    /**
     * 门店id
     */
    @ExcelProperty(value = "门店id")
    private Long storeId;

    /**
     * 巡店报告id（删除巡店报告时需要删除对应的统计数据）
     */
    @ExcelProperty(value = "巡店报告id", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "删=除巡店报告时需要删除对应的统计数据")
    private Long reportId;

    /**
     * 最后一次巡店时间
     */
    @ExcelProperty(value = "最后一次巡店时间")
    private Long lastPatrolTime;

    /**
     * 得分
     */
    @ExcelProperty(value = "得分")
    private BigDecimal score;

    /**
     * 模板总分
     */
    @ExcelProperty(value = "模板总分")
    private BigDecimal totalScore;

    /**
     * 有问题、不合格项个数
     */
    @ExcelProperty(value = "有问题、不合格项个数")
    private Integer problemNumber;

    /**
     * 总项个数
     */
    @ExcelProperty(value = "总项个数")
    private Integer checkItemNumber;

    /**
     * 巡店耗时（毫秒）
     */
    @ExcelProperty(value = "巡店耗时", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "毫=秒")
    private Long duration;

    /**
     * 整改项个数
     */
    @ExcelProperty(value = "整改项个数")
    private Integer rectifyNumber;

    /**
     * 是否任务巡店（1=true，0=false）
     */
    @ExcelProperty(value = "是否任务巡店", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==true，0=false")
    private Integer taskPatrol;

    /**
     * 是否非任务巡店（1=true，0=false）
     */
    @ExcelProperty(value = "是否非任务巡店", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==true，0=false")
    private Integer freePatrol;

    /**
     * 是否实时巡店（1=true，0=false）
     */
    @ExcelProperty(value = "是否实时巡店", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==true，0=false")
    private Integer realTimePatrol;

    /**
     * 是否录像巡店（1=true，0=false）
     */
    @ExcelProperty(value = "是否录像巡店", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==true，0=false")
    private Integer livePatrol;

    /**
     * 是否现场巡店（1=true，0=false）
     */
    @ExcelProperty(value = "是否现场巡店", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==true，0=false")
    private Integer videoPatrol;

    /**
     * 是否模板巡店（1=true，0=false）
     */
    @ExcelProperty(value = "是否模板巡店", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==true，0=false")
    private Integer templatePatrol;

    /**
     * 是否自定义巡店（1=true，0=false）
     */
    @ExcelProperty(value = "是否自定义巡店", converter = ExcelDictConvert.class)
    @ExcelDictFormat(readConverterExp = "1==true，0=false")
    private Integer customPatrol;

    /**
     * 整改人ids
     */
    @ExcelProperty(value = "整改人ids")
    @TableField(typeHandler = ListInteger2ListLongTypeHandler.class)
    private List<Long> assignRectifyPersons;

    /**
     * 0: 整改通过 1：未整改
     */
    @ExcelProperty(value = "0: 整改通过 1：未整改")
    private Integer rectifyPass;

    /**
     * 不适用个数
     */
    @ExcelProperty(value = "不适用个数")
    private Integer notApplicableNumber;


}
